#include "JSONInterpreter.h"

namespace Gw2API{

	

JSONInterpreter::JSONInterpreter(void)
{
}


JSONInterpreter::~JSONInterpreter(void)
{
}


std::vector<World> JSONInterpreter::interpreteToWorldMapping(JSON::JSON *ptr){
	std::vector<World> worlds;

	if(ptr->type == JSON::List && ptr->listType == JSON::Object){
		std::vector<JSON::JSON>::iterator it;
		for(it = ptr->list.begin(); it != ptr->list.end(); it++)
			worlds.push_back(World(&it->object["id"].str, &it->object["name"].str));
	}
	return worlds;
}


std::vector<evtStat> JSONInterpreter::interpreteToEventStatus(JSON::JSON *ptr){
	std::vector<evtStat> stats;
	evtStat stat;

	if(ptr->type == JSON::Object && ptr->object["events"].type == JSON::List){
		std::vector<JSON::JSON>::iterator it;
		for(it = ptr->object["events"].list.begin(); it != ptr->object["events"].list.end(); it++){
			stat.event_id = it->object["event_id"].str;
			stat.map_id = it->object["map_id"].i;
			stat.world_id = it->object["world_id"].i;
			stat.state = it->object["state"].str;
			stats.push_back(stat);
		}
	}
	return stats;
}


std::vector<Event> JSONInterpreter::interpreteToEventMapping(JSON::JSON *ptr){
	std::vector<Event> events;
	
	if(ptr->type == JSON::List && ptr->listType == JSON::Object){
		std::vector<JSON::JSON>::iterator it;
		for(it = ptr->list.begin(); it != ptr->list.end(); it++)
			events.push_back(Event(&it->object["id"].str, &it->object["name"].str));
	}
	return events;
}


std::vector<Map> JSONInterpreter::interpreteToMapMapping(JSON::JSON *ptr){
	std::vector<Map> maps;

	if(ptr->type == JSON::List && ptr->listType == JSON::Object){
		std::vector<JSON::JSON>::iterator it;
		for(it = ptr->list.begin(); it != ptr->list.end(); it++)
			maps.push_back(Map(&it->object["id"].str, &it->object["name"].str));
	}
	return maps;
}


std::vector<WVWMatch> JSONInterpreter::interpreteToWVWMatchMapping(JSON::JSON *ptr){
	std::vector<WVWMatch> matches;

	if(ptr->type == JSON::Object && ptr->object.find("wvw_matches") != ptr->object.end()){
		std::vector<JSON::JSON>::iterator it;
		for(it = ptr->object["wvw_matches"].list.begin(); it != ptr->object["wvw_matches"].list.end(); it++)
			matches.push_back(WVWMatch(&it->object["wvw_match_id"].str, it->object["red_world_id"].i, it->object["blue_world_id"].i, 
							it->object["green_world_id"].i, &it->object["start_time"].str, &it->object["end_time"].str));
	}
	return matches;
}

};